﻿/**
@file SpriteD3D10.h
@author onlytest
@brief SpriteD3D10的声明
@version 0.001
*/
#ifndef SPRITED3D10_H
#define SPRITED3D10_H

#include "SpriteD3D.h"
namespace	Sprite
{
	/**
	@brief SpriteD3D10继承于SpriteD3D主要用于D3D10的初始化
	*/
	class SpriteD3D10 :
		public SpriteD3D
	{

	public:
		/**
		@brief SpriteD3D10构造函数
		@param  IDevice10 DX10的设备指针
		@param  ISwapChain DX10的交换链
		@return   
		*/
		SpriteD3D10();

		/**
		@brief initD3D的初始化
		@param  HMainWnd	主窗口句柄
		@param  nWidth	屏幕宽度
		@param  nHeight	屏幕高度
		@return   返回是否成功
		*/
		virtual	HRESULT	initD3D(HWND HMainWnd,int nWidth,int nHeight);

		
		/**
		@brief resetOMTargetsAndViewport设置DX10的视口
		*/
		virtual void resetOMTargetsAndViewport();

		
		/**
		@brief onResizeDX10改变大小时调用此函数
		*/
		virtual void onResize();
		/**
		@brief onResize
		@param  nWidth 屏幕宽度
		@param  nHeight 屏幕高度
		*/
		virtual void onResize(int nWidth,int nHeight);
		/**
		@brief SpriteD3D10析构函数
		*/
		virtual ~SpriteD3D10(void);
		/**
		@brief DX10的清理屏幕
		*/
		virtual void clear();
		/**
		@brief 开始绘制
		*/
		virtual void begin();
		/**
		@brief 结束绘制
		*/
		virtual void end();
	protected:	
		
		///交换链
		IDXGISwapChain*  m_ISwapChain;
		///设备类型
		D3D10_DRIVER_TYPE m_d3dDriverType;
		///交换链的描述
		DXGI_SWAP_CHAIN_DESC m_descSwapChain;
		///深度模板缓存
		ID3D10Texture2D* m_DepthStencilBuffer;
		///渲染对象视图
		ID3D10RenderTargetView* m_RenderTargetView;
		///深度模板缓存视图
		ID3D10DepthStencilView* m_DepthStencilView;
	};
}

#endif
